const {
	connect
} = require("tls");

// const url = uni.getStorageSync('yu_ming') // 
// console.log(url)
const baseUrl = 'https://d-xueer.bigchun.com/api/'; // 后端的主机名 + 端口  


// const baseUrl = 'https://' + url + '/api/'; // 后端的主机名 + 端口号


// const baseUrls = 'https://d-xueer.bigchun.com/file/hear_say/res/'; // 后端的主机名 + 端口号




// const getTokenHandle = () => {
// 	return uni.getStorageSync('token') // 获取登录用户token
// }

// // 请求白名单页面（不需要token请求的页面）
// const pageWhiteList = ['/pages/index/index'];

// // 请求响应拦截处理
// const resInterceptHandle = () => {
// 	// const routes = getCurrentPages(); // 获取当前打开过的页面路由数组
// 	// console.log(111213132123)
// 	// console.log(routes)
// 	// const curRoute = routes[routes.length - 1].route // 获取当前页面路由
// 	// const flag = pageWhiteList.includes(curRoute)
// 	// console.log(getTokenHandle);
// 	// if (!flag) {
// 	// 	console.log(`---[ ${curRoute} ]页面获取数据需要登录---`)
// 	// 	uni.navigateTo({
// 	// 		url: '/pages/login/index'
// 	// 	})
// 	// }
// 	// return flag
// }


// 请求参数处理
const requestParam = (data, method) => {
	let str = '';
	if (method == 'post') {
		str = JSON.stringify(data);

		return str;
	} else if (method == 'get') {
		for (let i in data) {
			str += i + '=' + data[i] + '&';
		}
		str = str.length > 0 ? str.substring(0, str.length - 1) : '';
		return encodeURI(str);
	}
};


// 请求封装
const sendRequest = (method = 'GET', url = '', params = {}, ) => {
	let promise = new Promise(async (resolve, reject) => {
		// let token = await getTokenHandle()
		// 获取本地token
		const token = uni.getStorageSync('token');
		// console.log(token)
		const URL = baseUrl + url + (method === 'GET' ? params : '')
		uni.request({
			header: {
				'Authorization': token,
				'token': token,
				// 'Content-Type': 'multipart/form-data',
				'content-type': 'application/json;charset=utf-8',
			},
			url: URL,
			method,
			data: method === 'GET' ? {} : params,
			success: function(res) {
				// console.log(res)
				// 响应403拦截跳转登录
				if (res.statusCode == 200 && res.data.status === 403) {
					resInterceptHandle()
					return
				}
				// 服务器返回数据
				if (res.data != null) {
					// console.log(res)
					resolve(res.data);
					// uni.hideLoading();
				} else {
					console.log(`============${method} 请求失败：============`);
					console.error(
						'接口地址: ',
						'【 ' + URL + ' 】'
					);
					console.error('请求参数: ', params);
					console.error('返回结果: ', res);
					// uni.hideLoading();
					uni.showToast({
						title: res.msg,
						icon: 'none',
						duration: 3000,
						mask: true
					});
					reject(res);
				}
			},
			fail: function(res) {
				console.log(`============${method} 请求失败：============`);
				console.error(
					'接口地址: ',
					'【 ' + URL + ' 】'
				);
				console.error('请求参数: ', params);
				console.error('返回结果: ', res);
				reject(res);
			}
		});
	});
	return promise;
}


// 封装post请求（url:请求接口； data：请求参数；）
const httpPost = async (url, data) => {
	const params = requestParam(data, 'post');
	const res = await sendRequest('POST', url, params)
	// console.log('post请求成功响应111：', res)
	if (res.msg == '账号不存在') {
		console.log("不存在")
		uni.clearStorageSync();
		uni.reLaunch({
			url: '/pages/login/login'
		});
	}
	return res
};

// 封装get请求（url:请求接口； data：请求参数；）
const httpGet = async (url, data) => {
	let params = data && JSON.stringify(data) != '{}' ?
		'?' + requestParam(data, 'get') :
		'';
	const res = await sendRequest('GET', url, params)
	// console.log('get请求成功响应', res)
	return res
};

// 自定义请求类型
const http = async (params = {
	method: 'GET',
	url: '',
	data: {}
}) => {
	const res = await sendRequest(params.method, params.url, params.data)
	console.log(`自定义${params.method}请求成功响应`, res)
	return res
};

module.exports = {
	Post: httpPost,
	Get: httpGet,
	http: http,
	url: baseUrl,

};
